.TH std::multimap::merge 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::multimap::merge \- std::multimap::merge

.SH Synopsis
   template< class C2 >                                         \fB(1)\fP \fI(since C++17)\fP
   void merge( std::map<Key, T, C2, Allocator>& source );
   template< class C2 >                                         \fB(2)\fP \fI(since C++17)\fP
   void merge( std::map<Key, T, C2, Allocator>&& source );
   template< class C2 >                                         \fB(3)\fP \fI(since C++17)\fP
   void merge( std::multimap<Key, T, C2, Allocator>& source );
   template< class C2 >                                         \fB(4)\fP \fI(since C++17)\fP
   void merge( std::multimap<Key, T, C2, Allocator>&& source );

   Attempts to extract ("splice") each element in source and insert it into *this using
   the comparison object of *this.

   No elements are copied or moved, only the internal pointers of the container nodes
   are repointed. All pointers and references to the transferred elements remain valid,
   but now refer into *this, not into source.

   The behavior is undefined if get_allocator() != source.get_allocator().

.SH Parameters

   source - compatible container to transfer the nodes from

.SH Return value

   \fI(none)\fP

.SH Exceptions

   Does not throw unless comparison throws.

.SH Complexity

   N * log(size() + N)), where N is source.size().

.SH Example


// Run this code

 #include <iostream>
 #include <map>
 #include <string>

 int main()
 {
     std::multimap<int, std::string> ma{{1, "apple"}, {5, "pear"}, {10, "banana"}};
     std::multimap<int, std::string> mb{{2, "zorro"}, {4, "batman"}, {5, "X"}, {8, "alpaca"}};
     std::multimap<int, std::string> u;
     u.merge(ma);
     std::cout << "ma.size(): " << ma.size() << '\\n';
     u.merge(mb);
     std::cout << "mb.size(): " << mb.size() << '\\n';

     for (auto const& kv : u)
         std::cout << kv.first << ", " << kv.second << '\\n';
 }

.SH Output:

 ma.size(): 0
 mb.size(): 0
 1, apple
 2, zorro
 4, batman
 5, pear
 5, X
 8, alpaca
 10, banana

.SH See also

   extract extracts nodes from the container
   \fI(C++17)\fP \fI(public member function)\fP
           inserts elements
   insert  or nodes
           \fI(since C++17)\fP
           \fI(public member function)\fP
